package com.cs.beneficios.web.action;

import com.cs.beneficios.business.entity.AreasDAO;
import com.cs.beneficios.business.entity.ProgramaDAO;
import com.cs.beneficios.business.model.AreaVO;
//import com.cs.beneficios.business.model.ProgramaVO;
import com.cs.beneficios.common.ConnectionFactory;
import com.cs.beneficios.web.form.SubprogramaForm;
import com.cs.paoyer.administration.business.model.UserVO;
import com.cs.paoyer.administration.exception.AdministrationUserException;
import com.cs.paoyer.administration.util.AccessControl;
import com.cs.paoyer.common.exception.CommonUserException;
import com.cs.paoyer.common.exception.UserException;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForward;
//import org.apache.struts.action.ActionError;
//import org.apache.struts.action.ActionErrors;
import java.io.IOException;
import java.sql.SQLException;

import java.util.Collection;

import javax.servlet.ServletException;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;

public class IngresarSubprogramaAction extends Action
{
  /**
   * This is the main action called from the Struts framework.
   * @param mapping The ActionMapping used to select this instance.
   * @param form The optional ActionForm bean for this request.
   * @param request The HTTP Request we are processing.
   * @param response The HTTP Response we are processing.
   * @return 
   * @throws java.io.IOException
   * @throws javax.servlet.ServletException
   */
  public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
  {
   
  ActionMessages messages = new ActionMessages();
   try{
      	AccessControl access = new AccessControl();
        access.validateAccess(mapping,request,response);
        
       //ConnectionFactory cf = new ConnectionFactory("beneficios","beneficios");
	   ConnectionFactory cf = new ConnectionFactory();
       HttpSession session = request.getSession();
       UserVO user = (UserVO)session.getAttribute("userInfo");
       SubprogramaForm formSubpro = (SubprogramaForm)form;
       
       ProgramaDAO objprogramaDAO = null;
       Collection coProgramas = null;
       Collection coSubSecret = null;
       
       String strCodeProg = formSubpro.getCodePrograma();
       String strNameSub = formSubpro.getSubprograma();
    
        if(formSubpro.getDesde().equals("") == false && formSubpro.getHasta().equals("") == false && 
            formSubpro.getDesde() != null && formSubpro.getHasta() != null && 
            formSubpro.getDesde().indexOf("/") != -1 && formSubpro.getHasta().indexOf("/") != -1 ){
            
            String strDesde = formSubpro.getDesde();
            String strHasta = formSubpro.getHasta();
            
            String ArrFecha[] =strDesde.split("/");
            String strDay = null;
            String strMonth = null;
            String strYear = null;
            String strDesdeFinal = null;
            String strHastaFinal = null;
            
            strYear = ArrFecha[2];
            strMonth = ArrFecha[1];  
            strDay = ArrFecha[0];
            strDesdeFinal = strYear+"-"+strMonth+"-"+strDay;
            
            String ArrFecha2[] =strHasta.split("/");
            strYear = ArrFecha2[2];
            strMonth = ArrFecha2[1];
            strDay = ArrFecha2[0];
            strHastaFinal = strYear+"-"+strMonth+"-"+strDay;
            
            formSubpro.setDesde(strDesdeFinal);
            formSubpro.setHasta(strHastaFinal);
        }
        
       try{
           /*if ((Object)strCodeProg != null){
             ProgramaVO objprogramaVO = new ProgramaVO();
             //ConnectionFactory cf = new ConnectionFactory("beneficios","beneficios");
             objprogramaVO.setCodePrograma(request.getParameter("programa1"));
             
             objprogramaDAO = new ProgramaDAO(cf);
             //HttpSession session = request.getSession();
             boolean estado = objprogramaDAO.EstadoPrograma(objprogramaVO);
             cf.closeConnection(objprogramaDAO.getConn());
             if(estado){
                session.setAttribute("mensajes","El programa esta desactivado, no puede ingresar beneficios");
                return mapping.findForward("fall");
             }
          }*/
          
          if(user.getUserGroupName().equals("ADMINISTRADOR PROGRAMA") || user.getUserGroupName().equals("ADMINISTRADOR GENERAL") ||
                 user.getUserGroupName().equals("SUPER USUARIO") || user.getUserGroupName().equals("ADMINISTRADOR SECRETARIA")){
                     
                 objprogramaDAO = new ProgramaDAO(cf);
                 coProgramas = objprogramaDAO.getProgramasVigentes(null,user.getUserGroupName(),user.getCode(),user.getCodeArea(),false);
                 cf.closeConnection(objprogramaDAO.getConn());
                 
                AreaVO objAreaVO = null;
                 if(strCodeProg != null && !strCodeProg.equalsIgnoreCase("")){
                     AreasDAO objAreaDAO = new AreasDAO(cf);
                     objAreaVO = new AreaVO();
                     objAreaVO = objAreaDAO.getAreaByProg(strCodeProg);
                     
                     coSubSecret = objAreaDAO.ViewAllSubSecre(String.valueOf(objAreaVO.getCode()));
                     cf.closeConnection(objAreaDAO.getConn());
                     
                     request.setAttribute("secretaria", objAreaVO.getNombre());
                 }
                 
                 
                request.setAttribute("programas",coProgramas);
                
                if(coSubSecret != null && coSubSecret.size() != 0)
                    request.setAttribute("coSubSecret",coSubSecret);
                    
                if(strCodeProg != null)
                    request.setAttribute("codeProg",strCodeProg);
                    
                if(strNameSub != null)
                    request.setAttribute("nameSubprog",strNameSub);
          }
        
          
          
       }catch(SQLException e){
		System.err.println("/******** TDSUB - cwsub");
		e.printStackTrace();
		System.err.println("TDSSPE - cwsub ********/");
       }
    
   }catch(UserException ue){
    messages.add("msgWarn",  new ActionMessage("loginForm.message."
																			+ ue.getExceptionVO().getId()));
				saveMessages(request, messages);
      	if(ue.getExceptionVO().getId()==AdministrationUserException.ENDED_SESSION)
        {       
              response.sendRedirect(request.getContextPath()+"/index.jsp");
        }
        else if(ue.getExceptionVO().getId()==CommonUserException.NOT_ALLOWED_RESOURCE)
        {
            response.sendRedirect(request.getContextPath()+"/admin/tile/invalidatedResource.jsp");
        }
        else
        {
            return mapping.getInputForward();
        }
      
   }
    return mapping.findForward("success");
  }
}